package br.com.os2.pacemark.gui;

import br.com.os2.pacemark.dao.IndicacaoClinicaDAO;
import br.com.os2.pacemark.model.IndicacaoClinica;
import br.com.os2.pacemark.util.Mensagem;
import br.com.os2.pacemark.util.MyTableModel;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Welington
 * 
 */
public class IndicacoesClinicas extends javax.swing.JDialog {

    /**
     * Variável usada para operações relacionadas oa banco de dados
     *
     */
    private IndicacaoClinicaDAO indicacaoClinicaDAO;

    public IndicacoesClinicas(java.awt.Frame parent, boolean modal) {

        super(parent, modal);

        initComponents();

        indicacaoClinicaDAO = new IndicacaoClinicaDAO();

        listar(indicacaoClinicaDAO.listar());

    }

    /**
     * Método para listar os convênios.
     *
     * Os dados listados são colocados na tabela.
     *
     * @param indicacaoClinicas Lista que contém os dados a serem mostrados na tabela
     * 
     */
    protected void listar(List<IndicacaoClinica> indicacaoClinicas) {

        MyTableModel myTableModel = new MyTableModel(IndicacaoClinica.class, indicacaoClinicas, tbIndicacoesClinicas);
        tbIndicacoesClinicas.setModel(myTableModel);

    }

    /**
     * Método para obter Convênio selecionado na tabela.
     *
     * @param linha linha selecionada da tabela
     *
     * @return retorna o indicacaoClinica na linha passada ou null caso não encontre
     *
     */
    public IndicacaoClinica getIndicacaoClinica(int linha) {

        MyTableModel myTableModel = (MyTableModel) tbIndicacoesClinicas.getModel();

        return (IndicacaoClinica) myTableModel.getEntitysToList().get(linha);

    }
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        txtPesquisa = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbIndicacoesClinicas = new javax.swing.JTable();
        btnNovo = new javax.swing.JButton();
        btnEditar = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        txtPesquisa.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtPesquisaKeyReleased(evt);
            }
        });

        jLabel1.setText("Pesquisar");

        tbIndicacoesClinicas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        jScrollPane1.setViewportView(tbIndicacoesClinicas);

        btnNovo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/incluir.png"))); // NOI18N
        btnNovo.setText("Novo");
        btnNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovoActionPerformed(evt);
            }
        });

        btnEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/editar.png"))); // NOI18N
        btnEditar.setText("Editar");
        btnEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarActionPerformed(evt);
            }
        });

        btnExcluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/excluir.png"))); // NOI18N
        btnExcluir.setText("Excluir");
        btnExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExcluirActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 600, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtPesquisa))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(btnNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnEditar, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnExcluir, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(txtPesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 279, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnNovo)
                    .addComponent(btnEditar)
                    .addComponent(btnExcluir))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        setSize(new java.awt.Dimension(636, 406));
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void txtPesquisaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPesquisaKeyReleased

        listar(indicacaoClinicaDAO.listar(txtPesquisa.getText()));

    }//GEN-LAST:event_txtPesquisaKeyReleased

    private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovoActionPerformed

        IndicacaoClinicaView indicacaoClinicaView = new IndicacaoClinicaView(this, true, new IndicacaoClinica(), "ADD");

        indicacaoClinicaView.setTitle("Convênio");

        indicacaoClinicaView.setVisible(true);
    }//GEN-LAST:event_btnNovoActionPerformed

    private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarActionPerformed

        int linha = tbIndicacoesClinicas.getSelectedRow();

        if (linha >= 0) {

            IndicacaoClinicaView indicacaoClinicaView = new IndicacaoClinicaView(this, true, getIndicacaoClinica(linha), "EDIT");

            indicacaoClinicaView.setTitle("Convênio");

            indicacaoClinicaView.setVisible(true);

        } else {

            Mensagem.novaMensagem("Selecione um registro",
                "Selecione um registro para editar",
                JOptionPane.WARNING_MESSAGE);

        }
    }//GEN-LAST:event_btnEditarActionPerformed

    private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExcluirActionPerformed

        int linha = tbIndicacoesClinicas.getSelectedRow();

        if (linha >= 0) {

            int resultado = Mensagem.novaMensagemConfirmacao("Deseja excluir esse registro?", "Excluir?");

            if (resultado == JOptionPane.YES_OPTION) {

                indicacaoClinicaDAO.excluir(getIndicacaoClinica(linha));

                listar(indicacaoClinicaDAO.listar());

            }

        } else {

            Mensagem.novaMensagem("Selecione um registro",
                "Selecione um registro para excluir",
                JOptionPane.WARNING_MESSAGE);

        }
    }//GEN-LAST:event_btnExcluirActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnEditar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnNovo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable tbIndicacoesClinicas;
    private javax.swing.JTextField txtPesquisa;
    // End of variables declaration//GEN-END:variables
}
